/*--------------------------------------------------------------- 
* Copyright (c) 1999,2000,2001,2002,2003                              
* The Board of Trustees of the University of Illinois            
* All Rights Reserved.                                           
*--------------------------------------------------------------- 
* Permission is hereby granted, free of charge, to any person    
* obtaining a copy of this software (Iperf) and associated       
* documentation files (the "Software"), to deal in the Software  
* without restriction, including without limitation the          
* rights to use, copy, modify, merge, publish, distribute,        
* sublicense, and/or sell copies of the Software, and to permit     
* persons to whom the Software is furnished to do
* so, subject to the following conditions: 
*
*     
* Redistributions of source code must retain the above 
* copyright notice, this list of conditions and 
* the following disclaimers. 
*
*     
* Redistributions in binary form must reproduce the above 
* copyright notice, this list of conditions and the following 
* disclaimers in the documentation and/or other materials 
* provided with the distribution. 
* 
*     
* Neither the names of the University of Illinois, NCSA, 
* nor the names of its contributors may be used to endorse 
* or promote products derived from this Software without
* specific prior written permission. 
* 
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
* NONINFRINGEMENT. IN NO EVENT SHALL THE CONTIBUTORS OR COPYRIGHT 
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
* ________________________________________________________________
* National Laboratory for Applied Network Research 
* National Center for Supercomputing Applications 
* University of Illinois at Urbana-Champaign 
* http://www.ncsa.uiuc.edu
* ________________________________________________________________ 
*
* error.c
* by Mark Gates <mgates@nlanr.net>
* -------------------------------------------------------------------
*/
#ifndef ERROR_H
#define ERROR_H
#include <stdio.h>

void warn      ( const char *inMessage, const char *inFile, int inLine );
void warn_errno( const char *inMessage, const char *inFile, int inLine );

#define FAIL( cond, msg )                       \
do {                                          \
if ( cond ) {                               \
warn( msg, __FILE__, __LINE__ );          \
exit( 1 );                                \
}                                           \
} while( 0 )

#define WARN( cond, msg )                       \
do {                                          \
if ( cond ) {                               \
warn( msg, __FILE__, __LINE__ );          \
}                                           \
} while( 0 )

#define FAIL_errno( cond, msg )                 \
do {                                          \
if ( cond ) {                               \
warn_errno( msg, __FILE__, __LINE__ );    \
exit( 1 );                                \
}                                           \
} while( 0 )

#define WARN_errno( cond, msg )                 \
do {                                          \
if ( cond ) {                               \
warn_errno( msg, __FILE__, __LINE__ );    \
}                                           \
} while( 0 )

#ifdef WIN32
char* winsock_strerror( unsigned long inErrno );
#endif
#endif // ERROR_H
